/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package otros;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

/**
 *
 * @author FERRETERIA
 */
public class Fecha {
    
    private Calendar cal = Calendar.getInstance(); 
    private DecimalFormat df = new DecimalFormat("00"); 
    private String fecha = null;

    public Fecha () {;}

    public Fecha (String date) {
        if ((date != null) && !date.isEmpty())
            this.fecha = date;
        else
            this.fecha = getFecha().replaceAll("-", "/");
     }

    public String getFecha() {
        return df.format(cal.get(Calendar.DATE)) + "-" + df.format(cal.get(Calendar.MONTH)+1) + "-" + 
                  cal.get(Calendar.YEAR); 
    }

    public String getFechaSQL() {
        String valor = fecha;
        if (fecha == null)
           valor = cal.get(Calendar.YEAR) + "-" + df.format(cal.get(Calendar.MONTH)+1) + "-" + 
           df.format(cal.get(Calendar.DATE));
        else {
            String aux [] = fecha.split("/");
            valor = df.format(Double.parseDouble(aux[2])) + "-" + df.format(Double.parseDouble(aux[1])) +
                    "-" + df.format(Double.parseDouble(aux[0]));
        }

        return valor;
    }

    public String getHora() {
        return df.format(cal.get(Calendar.HOUR_OF_DAY)) + ":" + df.format(cal.get(Calendar.MINUTE)) + ":" + 
                df.format(cal.get(Calendar.SECOND));
    }

    public int getAño() {
        return cal.get(Calendar.YEAR);
    }
    
    public static boolean formatoCorrecto(String fech) {
        boolean valor = true;
        try {  
            if (!fech.isEmpty()) {
                SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
                if (fech.trim().length() != dateFormat.toPattern().length()) 
                    return false;

                dateFormat.setLenient(false);  // desactivamos que corrija la fecha
                dateFormat.parse(fech.trim());  
            }
            else
                valor = false;
        } catch (ParseException pe) {
                valor = false; 
        }
        return valor;
    }
    
    public static String getMes(int mes) {
        switch(mes) {
            case 0:
                return "Enero";
            case 1:
                return "Febrero";
            case 2:
                return "Marzo";
            case 3:
                return "Abril";
            case 4:
                return "Mayo";
            case 5:
                return "Junio";
            case 6:
                return "Julio";
            case 7:
                return "Agosto";    
            case 8:
                return "Septiembre";   
            case 9:
                return "Octubre";
            case 10:
                return "Noviembre";
            case 11:
                return "Diciembre";
        }
        return "Sin MES";
    }
    
    public static int CompararFechas (String fecha1, String fecha2) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date f1 = sdf.parse(fecha1);
            Date f2 = sdf.parse(fecha2);
            return f1.compareTo(f2);
            
        } catch (ParseException ex) {
            System.out.println("Error en compararfechas");
            return 9999;
        }
    }
    
    public static String formatFecha (String Fecha) {
        DecimalFormat df = new DecimalFormat("00"); 
        String aux [] = Fecha.split("-");
        String valor = df.format(Double.parseDouble(aux[2])) + "-" + df.format(Double.parseDouble(aux[1])) +
                    "-" + df.format(Double.parseDouble(aux[0]));
        return valor;
    }
}

